package com.ruoyi.transaction.mapper;

import com.ruoyi.transaction.domain.TransactionWithdrawal;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  数据层
 * 
 * @author ruoyi
 * @date 2019-05-07
 */
public interface TransactionWithdrawalMapper 
{
	/**
     * 查询信息
     * 
     * @param id ID
     * @return 信息
     */
	public TransactionWithdrawal selectTransactionWithdrawalById(Long id);
	
	/**
     * 查询列表
     * 
     * @param transactionWithdrawal 信息
     * @return 集合
     */
	public List<TransactionWithdrawal> selectTransactionWithdrawalList(TransactionWithdrawal transactionWithdrawal);
	
	/**
     * 新增
     * 
     * @param transactionWithdrawal 信息
     * @return 结果
     */
	public int insertTransactionWithdrawal(TransactionWithdrawal transactionWithdrawal);
	
	/**
     * 修改
     * 
     * @param transactionWithdrawal 信息
     * @return 结果
     */
	public int updateTransactionWithdrawal(TransactionWithdrawal transactionWithdrawal);
	
	/**
     * 删除
     * 
     * @param id ID
     * @return 结果
     */
	public int deleteTransactionWithdrawalById(Long id);
	
	/**
     * 批量删除
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteTransactionWithdrawalByIds(String[] ids);


	/**
	 * 根据钱包类型id查询代付交易信息
	 * @param walletKindId	钱包类型id
	 * @return				现交易信息集合
	 */
    List<TransactionWithdrawal> selectTransactionWithdrawalByWalletKindId(@Param("walletKindId") Long walletKindId);


	/**
	 * 查询代付记录的所有渠道名称
	 * @return  代付交易集合
	 */
	List<TransactionWithdrawal> selectTransactionWithdrawalListByChannelName();


	/**
	 * 查询代付记录的所有商户名称
	 * @return	代付交易集合
	 */
	List<TransactionWithdrawal> selectTransactionWithdrawalListByMerchantName();


	/**
	 * 查询代付预期数据
	 * @param channelName		渠道名称
	 * @param merchantName		商户名称
	 * @param yesterday			日期
	 * @return					代付预期数据
	 */
	TransactionWithdrawal selectByChannelNameAndMerchantName(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("yesterday") String yesterday);


	/**
	 * 查询代付实际数据
	 * @param channelName		渠道名称
	 * @param merchantName		商户名称
	 * @param yesterday			日期
	 * @param status			代付状态
	 * @return					代付实际数据
	 */
	TransactionWithdrawal selectByChannelNameAndMerchantNameAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 查询代付  预期数据  渠道为空、商户名称为空    按天
	 * @param yesterday	日期
	 * @return			预期数据
	 */
    TransactionWithdrawal selectByDay(@Param("yesterday") String yesterday);


	/**
	 * 查询代付  预期数据  渠道为空、商户名称为空    按天
	 * @param yesterday	日期
	 * @return			实际数据
	 */
	TransactionWithdrawal selectByDayAndStstus(@Param("yesterday") String yesterday, @Param("status") int status);



	/**
	 * 查询代付  渠道    按天
	 * @param channelName	渠道名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionWithdrawal selectByChannelAndDay(@Param("channelName") String channelName, @Param("yesterday") String yesterday);


	/**
	 * 查询代付  渠道  代付状态  按天
	 * @param channelName	渠道
	 * @param yesterday		日期
	 * @param status		代付状态
	 * @return				实际数据
	 */
	TransactionWithdrawal selectByChannelAndDayAndStstus(@Param("channelName") String channelName, @Param("yesterday") String yesterday, @Param("status") int status);




	/**
	 * 查询代付  商户   按天
	 * @param merchantName	商户
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionWithdrawal selectByMerchantAndDay(@Param("merchantName") String merchantName, @Param("yesterday") String yesterday);


	/**
	 * 查询代付  商户   按天
	 * @param merchantName	商户
	 * @param yesterday		日期
	 * @param status		代付状态
	 * @return				预期数据
	 */
	TransactionWithdrawal selectByMerchantAndDayAndStstus(@Param("merchantName") String merchantName, @Param("yesterday") String yesterday, @Param("status") int status);




	/*===================================================================*/



	/**
	 * 查询代付    渠道   商户   按小时
	 * @param channelName
	 * @param merchantName
	 * @return
	 */
	TransactionWithdrawal selectByChannelNameAndMerchantNameAndHours(@Param("channelName") String channelName, @Param("merchantName")  String merchantName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询代付    渠道   商户  支付状态   按小时
	 * @param channelName
	 * @param merchantName
	 * @param status
	 * @return
	 */
	TransactionWithdrawal selectByChannelNameAndMerchantNameAndStatusAndHours(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询代付   按小时
	 * @return
	 */
	TransactionWithdrawal selectByHours(@Param("start") String start, @Param("end") String end);


	/**
	 * 查询代付  支付状态  按小时
	 * @param status
	 * @return
	 */
	TransactionWithdrawal selectByDayAndStstusAndHours(@Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询代付  渠道  按小时
	 * @param channelName
	 * @return
	 */
	TransactionWithdrawal selectByChannelAndHours(@Param("channelName")  String channelName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询代付  渠道  支付状态 按小时
	 * @param channelName	渠道
	 * @param status		支付状态
	 * @return
	 */
	TransactionWithdrawal selectByChannelAndDayAndStstusAndHours(@Param("channelName") String channelName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询代付  商户   按小时
	 * @param merchantName
	 * @return
	 */
	TransactionWithdrawal selectByMerchantAndHours(@Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询代付  商户  支付状态 按小时
	 * @param merchantName
	 * @param status
	 * @return
	 */
	TransactionWithdrawal selectByMerchantAndDayAndStstusAndHours(@Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end, @Param("status") int status);
}